c9dfb637af44a9e8a352e12edeefc429174c2cc0,backend-service/app/models/daos/DatasetInfoDao.java,DatasetInfoDao,updateDatasetSchema,#JsonNode#,1106

Before Change


    final JsonNode urnNode = root.path("urn");
    final JsonNode schemas = root.path("schemas");

    if ((idNode.isMissingNode() && urnNode.isMissingNode()) || schemas.isMissingNode()) {
      throw new IllegalArgumentException(
          "Dataset schemas update fail, " + "Json missing necessary fields: " + root.toString());
    }

    Integer datasetId = 0;
    String urn = null;
    try {
      final Object[] idUrn = findIdAndUrn(idNode, urnNode);
      datasetId = (Integer) idUrn[0];
      urn = (String) idUrn[1];
    } catch (Exception ex) {
      urn = urnNode.asText();
    }

    ObjectMapper om = new ObjectMapper();

    DatasetSchemaInfoRecord rec = om.convertValue(schemas, DatasetSchemaInfoRecord.class);
    rec.setDatasetId(datasetId);
    rec.setDatasetUrn(urn);
    rec.setModifiedTime(System.currentTimeMillis() / 1000);

    // insert dataset and get ID if necessary
    if (datasetId == 0) {
      DatasetRecord record = new DatasetRecord();
      record.setUrn(urn);
      record.setSourceCreatedTime("" + rec.getCreateTime() / 1000);
      record.setSchema(rec.getOriginalSchema());
      record.setSchemaType(rec.getFormat());
      record.setFields((String) StringUtil.objectToJsonString(rec.getFieldSchema()));
      record.setSource("API");

      Urn urnType = new Urn(urn);
      record.setDatasetType(urnType.datasetType);
      String[] urnPaths = urnType.abstractObjectName.split("/");
      record.setName(urnPaths[urnPaths.length - 1]);

      DICT_DATASET_WRITER.append(record);
      DICT_DATASET_WRITER.close();

      datasetId = Integer.valueOf(DatasetDao.getDatasetByUrn(urn).get("id").toString());
      rec.setDatasetId(datasetId);
    }
    // if dataset already exist in dict_dataset, update info
    else {
      DICT_DATASET_WRITER.execute(UPDATE_DICT_DATASET_WITH_SCHEMA_CHANGE,
          new Object[]{rec.getOriginalSchema(), rec.getFormat(), StringUtil.objectToJsonString(rec.getFieldSchema()),
              "API", System.currentTimeMillis() / 1000, datasetId});
    }

After Change


      record.setUrn(urn);
      record.setSourceCreatedTime("" + rec.getCreateTime() / 1000);
      record.setSchema(rec.getOriginalSchema().getText());
      record.setSchemaType(rec.getOriginalSchema().getFormat());
      record.setFields((String) StringUtil.objectToJsonString(rec.getFieldSchema()));
      record.setSource("API");

      Urn urnType = new Urn(urn);
      record.setDatasetType(urnType.datasetType);
      String[] urnPaths = urnType.abstractObjectName.split("/");
      record.setName(urnPaths[urnPaths.length - 1]);

      DICT_DATASET_WRITER.append(record);
      DICT_DATASET_WRITER.close();

      datasetId = Integer.valueOf(DatasetDao.getDatasetByUrn(urn).get("id").toString());
      rec.setDatasetId(datasetId);
    }
    // if dataset already exist in dict_dataset, update info
    else {
      DICT_DATASET_WRITER.execute(UPDATE_DICT_DATASET_WITH_SCHEMA_CHANGE,
          new Object[]{rec.getOriginalSchema().getText(), rec.getOriginalSchema().getFormat(),
              StringUtil.objectToJsonString(rec.getFieldSchema()), "API", System.currentTimeMillis() / 1000, datasetId});
    }